// // Copyright 2022 NullPTR. All Rights Reserved.
//
//
// #include "FBitmapProc.h"
//
// namespace SDFGen
// {
// 	void FBitmapProc::Downscaling(const FRGBABitmap* Src, FRGBABitmap* Dest, float Scale)
// 	{
// 		const cv::Mat Src_Image = BitmapToCVMat(Src);
// 		cv::Mat Dest_Image;
// 		cv::resize(Src_Image, Dest_Image, cv::Size(), Scale, Scale, cv::INTER_AREA);
// 		CVMatToBitmap(Dest_Image, Dest);
// 	}
//
// 	void FBitmapProc::Downscaling(const FRGBABitmap* Src, FRGBABitmap* Dest, int16 DestWidth, int16 DestHeight)
// 	{
// 		const cv::Mat Src_Image = BitmapToCVMat(Src);
// 		cv::Mat Dest_Image;
// 		cv::resize(Src_Image, Dest_Image, cv::Size(DestWidth, DestHeight), 0, 0, cv::INTER_AREA);
// 		CVMatToBitmap(Dest_Image, Dest);
// 	}
//
// 	cv::Mat FBitmapProc::BitmapToCVMat(const FRGBABitmap* Bitmap)
// 	{
// 		check(Bitmap);
//
// 		const auto Width = Bitmap->GetWidth();
// 		const auto Height = Bitmap->GetHeight();
// 		
// 		cv::Mat Mat(Height, Width, CV_8UC3);
//
// 		const int Channels = Mat.channels();
//
// 		for (int y = 0; y < Height; ++y)
// 		{
// 			unsigned char *Data = Mat.ptr(y);
//
// 			for (int x = 0; x < Width; ++x)
// 			{
// 				unsigned char r, g, b;
// 				Bitmap->GetRGB(x, y, r, g, b);
//
// 				Data[x * Channels] = b;
// 				Data[x * Channels + 1] = g;
// 				Data[x * Channels + 2] = r;
// 			}
// 		}
//
// 		return Mat;
// 	}
//
// 	void FBitmapProc::CVMatToBitmap(const cv::Mat& Mat, FRGBABitmap* Bitmap)
// 	{
// 		check(Bitmap);
//
// 		const auto Width = Mat.cols;
// 		const auto Height = Mat.rows;
//
// 		Bitmap->Create(Width, Height);
//
// 		// Mat中的像素存储顺序是[B,G,R]
// 		const int Channels = Mat.channels();
//
// 		for (int y = 0; y < Height; ++y)
// 		{
// 			const unsigned char *Data = Mat.ptr(y);
//
// 			for (int x = 0; x < Width; ++x)
// 			{
// 				const unsigned char b = Data[x * Channels];
// 				const unsigned char g = Data[x * Channels + 1];
// 				const unsigned char r = Data[x * Channels + 2];
//
// 				Bitmap->SetRGB(x, y, r, g, b);
// 			}
// 		}
// 	}
//
// 	cv::Mat FBitmapProc::LoadFromFile(const FString& ImageFilePath)
// 	{
// 		return cv::imread(TCHAR_TO_UTF8(*ImageFilePath));
// 	}
// }
